Alrighty, so this is mainly to get my thoughts down from what I've learned this year, from not knowing houdini to now.
My biggest mistake when setting up my rig was making it rely on too much information from other departments (uvs and topology) because I got the task so early in production, the model was still in its very early stages.
So if I was ever in that boat again, I'd try not to rely heavily on topology or uvs because that will change.
Make sure you have concept art ready and references good to go before starting, it will save you a lot of time in wondering what things are meant to look like. Have a look at them and the model, see which bits should be split (e.g. The tail can be grouped and groomed separately) . You can always blend guides between different areas
What helps this process is remembering that houdini doesn’t read the guides that a hairgen node makes as fur. It’s just a line with some points, aka a primitive, with some fancy attributes. So really, you’re procedurally modelling at the moment.
What makes these lines hair are certain attributes, using a hairgen node initially to get lines as your guides gives you all the attributes you may need. It really depends on what you're after; for me it was easiest to use a hairgen node.
The hairgen node creates lines everywhere, you can control the number of segments (no. of points) and length of the lines. Under the hood it creates all the relative attributes the groom nodes need.
Once you groom your hair (more on this later), put another hairgen node as the final one.
There are 2 things that the hairgen node wants - the mesh (aka the “skin”) and a VDB of the skin. Don’t panic if you can’t get a VDB, it works perfectly fine without it, and to be honest my whole setup doesn’t bother with it.
The VDB is used more down the line when you plug in your guideprocess nodes - it acts as a way to avoid collisions with the skin when you bend your fur too much for example. The issue is, sometimes it causes the hairgen node to generate the lines not on the skin of the mesh, and that then causes problems down the line in lighting for example.
There are other methods of course but this one is the one I'm familiar with :)
I started off 2019 determined to learn some form of charfx, and the first thing I ended up getting was fur grooming and sim in Houdini.
Hair and fur are lines with width and length. If you wanted to treat these lines how houdini treats fur, then those lines require skinprimid and skinprimuv, which are automatically generated from a hairgen node.
I started off by attempting the fur masterclass on sidefx’s site, however my attention span is not long enough to get through it all. What I did learn from it at least was how to use the shelf tools for hair and fur.
At first, I didn’t mind the shelf tools, if your geo is set up the right way and you don’t want many custom attributes, then they work just fine.
I found that once I wanted layers with fur, and variations, the shelf tools were annoying because there was too much jumping in and out of sops. So then I set about doing an entire hairgen in one sops node. It’s entirely possible and in my mind it’s much clearer.
The shelf tools run off hairgen nodes. They don’t create lines and copy to points like I originally experimented with. You can use this to create your own setup in SOPs.
Create one hairgen node, set a low density, chosen length and segments. Generally if you’re dealing with really short fur, 2-3 segments is good. If you want some nice twisty shapes or frizz in a groom then up your segments depending on length.
changing segments to suit length and groom ^
Doing that creates your guides, and you’ll want to groom the guides first. Houdini’s guideprocess node is fantastic for that. With that node you’re able to set direction, length (useful if you wanted to override what the hairgen set. It’s also one of the ways you can mask out an area and only change that length, e.g. Tail), bend, frizz, lift and some more.
Once you’ve groomed your fur as you like you then perform another hairgen to create your final amount of fur. After that is when you clump it using the clump node, which is another amazing piece of houdini node magic.
This is explained in more detail in a bit. What's also useful is that hairgen tends to automatically pick up normals on points and uses it as unguided fur direction. (blue dashes are normals)
If you have a closer look at the hairgen node, you’ll notice nearly every single option/parameter can be overridden with an attribute. Use that to your advantage
I've outlined the main groom tools below, it's really up to you which nodes to use to achieve the groom you want. Fur generally flows along the skin of the creature, so for me the first step was to replicate that. Bends, frizz, curls, clumping all came after setting the length and direction of the fur. The order I did things was:
hairgen(creating guides) -> set length -> set direction -> bend -> frizz(optional) -> clump -> hairgen -> clump
This is a very manual setup I found on the side -
Paint density > guide groom until you’re happy > hairgen > clump (+curling, if you like) > guide process (frizz, bend)
The result is really nice and works well for realistic hair grooms. Houdini may crash. Mine did soo many times.
However, the manual setup isn't open to a lot of change, which is why I prefer a more procedural approach.
If you have a closer look at the hairgen and guide nodes, you’ll notice nearly every single option/parameter can be overridden with an attribute. Use that to your advantage
Guide groom tool :
The guide groom tool is a manual, more Xgen way of grooming, and it caches everything you do. That’s the most important thing to remember because if something before it in the network changes, you have to re-cache your guide grooms to show what it looks like with your edits. Note, sometimes the re-cache button doesn’t always work nicely and you’ll just have to do it again.
I should mention – you can use any of these grooming tools after the big hairgen. I choose not to because I don’t have a computer that can handle it. It’s the difference between moving 100 polys (which is what houdini counts hair as) vs 100,000. If you do have a computer that can handle it, however, feel free to go nuts. Experiment and find the best setup for you.
The guideprocess node contains these modes:
set lift, set length, set direction, displace, wave, straighten, smooth, frizz, bend, set simulation settings
You can put down a guide process and select the mode yourself, or for instance you can type in bend when searching for a node and there will be a preset guideprocess in the bend mode for you.
This is where you can experiment to get the directions you want, how you want. For me, i found the normals of the geo super important in setting direction of the fur. It was intuitive for me to comb the normals to represent the flow of the fur.
There are other methods like drawing curves over the mesh to represent the general flow of the area, and attribute copying/blending those across to your curves directly, or you can apply them to your normals. That way when you need to tweak direction, you just tweak the drawn curves.
Easiest part of the fur to groom for me was the back legs and initially used that area plus the cheeks as a testing area.
These areas will generally have a curve to the fur, and some sort of swirl going on
Clumping is important! Nothing tends to look right without it.
Important thing to remember - If you get the dragon scale look when all you wanted was large clumps, just turn down blend.
The hairclump node also curls very nicely -
Play around with the settings to get a feel for what it can do.
I had a lot of clump nodes. Check out this video, it's super cool and explains clumping: https://vimeo.com/334510961
halfway through it goes on to explain Subclumping and getting details in your clumps of fur.
My favourite nodes.
Rendering in Renderman
Get familiar with these -
What to remember
Always jump back to reference and concept art. It’s easy to go down a rabbit hole and get distracted with a groom, and then you look up and realise you’ve completely missed the mark.